package Java2Test.mythread.threadtest5;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MyRunnable implements Runnable {
    private final ArrayList<Integer> list; // 共享奖品池，使用final确保引用不可变

    public MyRunnable(ArrayList<Integer> list) {
        this.list = list;
    }

    @Override
    public void run() {
        while (true) {
            // 1. 同步块：确保多线程安全访问共享资源
            synchronized (MyRunnable.class) {
                // 2. 检查奖品池是否为空（原子操作）
                if (list.isEmpty()) {
                    break; // 奖品已抽完，退出循环
                }

                // 3. 随机抽取奖品（原子操作）
                int randomIndex = new Random().nextInt(list.size());
                Integer prize = list.remove(randomIndex);

                // 4. 输出抽奖结果
                System.out.println(
                        Thread.currentThread().getName() + "又产生了一个" + prize + "元大奖");
            }

            // 5. 线程休眠：模拟处理耗时，避免输出过快（非关键逻辑）
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }
}